- UML(统一建模语言)
The Unified Modeling Language (opens new window)
UML Tutorial (opens new window)
什么是统一建模语言(UML)? (opens new window)
# 常用的 UML 图
# 用例图 Use Case Diagram (opens new window)
- 用于描述系统提供的系列功能,每个用例代表系统的一个功能模块
- 包含用例、角色两种图元

# 类图 Class Diagram (opens new window)
表示系统中应该包含哪些实体,各实体之间如何关联
类在类图上使用包含三个部分的矩形来描述:最上面的部分显示类的名称,中间部分包含类的属性,最下面的部分包含类的方法
类之间的基本关系
- 关联(包括聚合、组合)
- 表现形式:类里的某个属性引用了另外一个实体
- 聚合:当某个实体聚合成另一个实体时,该实体还可以同时是另一个实体的部分
- 组合:当某个实体组合成另一个实体时,该实体则不能同时是一个实体的部分
- 关联使用一条实线来表示,带箭头的实线表示单向关联
- 泛化
- 泛化与继承是同一个概念,都是指子类是一种特殊的父类
- 类与类之间的继承关系使用带空心三角形的实线表示
- 类实现接口可视为一种特殊的继承,这种实现用带空心三角形的虚线表示
- 依赖
- 如果一个类的改动会导致另一个类的改动,则称两个类之间存在依赖
- 表现形式:形参、局部变量、静态变量
- 依赖关系使用带箭头的虚线表示,其中箭头指向被依赖的实体
实线-继承(is a)、虚线-实现,空心三角形方向都是从子类/实现类指向父类/接口
实线-关联、虚线-依赖
空心菱形-聚合(has a)、实心菱形-组合(contains a)聚合和组合的区别
聚合和组合是都是特殊的关联关系,二者都是整体和部分的关系,主要区别有 2 点:
一是整体和部分的这种关联关系,组合更强一些,聚合要弱一些;
二是生命周期,对于组合,部分的生命周期不能超越整体,也就说部分不能脱离整体而存在,部分随着整体的创建而被创建,消亡而被消亡。对于聚合,部分的生命周期可以超越整体,整体消亡了,部分还可以继续独立存在。- 关联(包括聚合、组合)


# 顺序图/时序图 Sequence Diagram (opens new window)
- 由活动者、对象、消息、生命线和控制焦点组成


@startuml
skinparam ParticipantBackgroundColor #DeepSkyBlue
actor 用户 as c #DeepSkyBlue
participant "客户端" as client
participant "服务网关" as ga
participant "用户服务" as user
database "数据库" as DB #DeepSkyBlue
participant "Google服务" as google #LightCoral
activate c #DeepSkyBlue
activate client #DeepSkyBlue
c->client:用户登录
group#LightCoral #LightCoral Google登录客户端流程
client -> google : 请求Google OAuth登录
activate google #DeepSkyBlue
google-->client:登录url
client->google:跳转登录页
google -> google : 用户登录
google --> client : Google登录Token
deactivate google
end
|||
client -> ga : 登录请求
note right#LightCoral:新增登录方式,三方登录请求实体
activate ga #DeepSkyBlue
ga ->user:请求转发
activate user #DeepSkyBlue
alt#DeepSkyBlue 常规登录
user -> DB : 查询用户信息
activate DB #DeepSkyBlue
DB -> user : 用户信息
deactivate DB
user->user:登录密码校验
|||
else Google登录
group#LightCoral #LightCoral Google登录服务端流程
user->google:验证token
activate google #DeepSkyBlue
google-->user:用户信息
deactivate google
user->user:存储或更新用户信息
end group
end
user-->ga:登录结果
deactivate user
ga -> client : 响应
deactivate ga
alt#DeepSkyBlue 成功
client -> c : 登录成功
else 失败
client -> c : 登录失败
end
deactivate client
|||
@enduml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# 活动图 Activity Diagram (opens new window)
- 用于描述用例内部的活动或方法的流程(如果除去活动图中的并行活动描述,就变成流程图)
- 开始状态、结束状态、活动、活动流、分支、分叉和汇合、泳道

# 状态机图 State Machine Diagram (opens new window)
- 表示某个对象所处的不同状态和该类的状态转换信息
- 初始状态、状态之间的转换、状态、判断点、一个或者多个终止点

# 组件图 Component Diagram (opens new window)
- 包含组件、接口和 Port 等图元

# 部署图 Deployment Diagram (opens new window)

Sponsor